1. Field of the Invention
The present invention relates to a computer program product, system, and method for resource allocation in a storage area network.
2. Description of the Related Art
In certain computing environments, a storage area network provides data paths between multiple host systems and multiple storage control units controlling multiple storage devices e.g., a Direct Access Storage Device (DASD), Redundant Array of Independent Disks (RAID), Just a Bunch of Disks (JBOD), etc. The data paths through the storage area network typically include switches and communication links which may be formed of fiber optic or other types of cables or may be wireless, for example.
Input/output commands issued by a host are directed through the storage area network to a port of a storage control unit. Each control unit port of a storage control unit typically has an address or other identification to distinguish it from other ports of the storage area network.
The data carrying capacity of a storage area network is typically limited by various factors. For example, data carrying channels of the storage area network are frequently designed or configured to support specified data transfer speeds measured in a certain number of data units such as bytes or bits, for example, per second. Accordingly, the data carrying capacity of a particular link is generally limited by the link speed of the communication link.
Further, data traversing a storage area network is frequently temporarily stored in one or more data buffers at various nodes of the storage area network. For example, a switch which couples selected communication links together may buffer data being received from one communication link connected to the switch in preparation for forwarding the buffered data to another communication link connected to the switch. Data may be buffered by the switch for a variety of reasons including the link speeds of the source and destination communication links connected to the switch may not match, or the destination link may be busy transmitting data from another source. Accordingly, data destined for that destination communication link may be buffered until the destination link is ready for it.
Resources utilized by the storage area network to transfer data through the network are limited. For example, the buffer capacity which a switch can provide for any one communication link coupled to that switch may be limited. Accordingly, to provide a degree of control as to the utilization of those limited resources, a resource allocation scheme is often utilized which allocates a certain number of “credits” to a component of the storage area network. For example, a particular port of a communication channel may be allocated a certain number of buffer credits which correspond to particular amounts of buffer capacity assigned to the port for storing data as the data is transferred through that port.
However, certain network conditions such as network congestion, for example, can lead to the assigned buffer capacity provided by the buffer credit allocation being insufficient for the amount of data being transferred. If all the assigned buffer storage provided by the buffer credit allocation is insufficient for the amount of data being transferred through the port, data transfer through that port may be temporarily halted or curbed until additional buffer credits are allocated.
Various schemes are used or proposed to determine how many buffer credits to allocate to a particular port of a channel of a storage area network. For example, the buffer credits may be manually allocated by a user. In one technique, the user may attempt to identify the link speed of a particular communication link and may attempt to identify the length of a particular communication link and arrive at a target buffer credit allocation number by multiplying those factors together. Such manual configuration of buffer credit allocation may result in an improper allocation due to various user errors or may be based upon inaccurate or incomplete information.
Automatic buffer credit allocation techniques have also been proposed. Such automatic allocation has typically been based upon current operating conditions such as detecting degradations in network performance. Another technique bases buffer credit allocation upon determining buffer capacity. Yet another automatic buffer credit allocation technique is based upon a measured data processing speed such as a measured round trip delay to process a frame of data, and is also based upon the number of bytes in the frame, and the speed of the interface in bytes/second.